1. Field of the Invention
The present invention relates to the field of remote service utilization for distributed computing, and more particularly to the remote service invocation of a REST service.
2. Description of the Related Art
Distributed computing refers to the disposition of programmatic elements for a computing application across multiple different computing sources in a computer communications network. Often embodied as part of a Web distributed application, a user interface to the application can be served from one network location, while different portions of program code for an application can be sourced from different locations in the network. Distributed applications enjoy an important advantage of code reuse such that to deploy a robust application, one need not develop the entire application from scratch. Rather, already proven application components can be combined from different sources through a common user interface to deliver the robust application. In this regard, at its extreme form, a distributed application can be nothing more than an aggregation of existing logical components.
Historically, Web services have driven the advancement of distributed computing. A Web service, strictly speaking, is a server-side application exposing a well-defined application programming interface (API) to access the logic of the server-side application. The Web service and its corresponding API can be published in a network accessible directory such that an interested calling application can recognize a proper format for both invoking the logic of the Web service and also for receiving a result from the invocation of the logic of the Web service. In Web services, the format for the request and the response must conform to a defined schema as published in the network accessible directory.
While Web services have proven helpful in the enterprise and have been all the rage for nearly a decade, the utilization of Web services is not without its challenges. For one, interactions with Web services are not cacheable resulting in performance disadvantages and the inability of Web services oriented applications to scale on demand. Further, communication state must be maintained when accessing remotely disposed Web services. Even further, additional protocol handling logic must be layered to enjoy the benefit of Web services, including support for the simple object access protocol (SOAP). Finally, Web services are entirely dependent on a separate and independent resource discovery system—namely the directory.
Realizing the inherent programs in the use of Web services, information technologists have begun to gravitate towards REST services which do not suffer the disadvantages noted herein. As is understood by those skilled in the art, REST refers to a collection of network architecture principles intended to expose access to resources in a stateless manner. The resources are exposed such that clients can access the resources uniformly without requiring knowledge of the whole resource set. In REST, resources are accessed stateless through commonly understood hypertext transfer protocol (HTTP) PUT and GET directives.
The “culture” associated with developers utilizing REST services shuns learning a complex service description language such as the Web Service Definition Language (WSDL) identified with Web services in order to code proper access to a Web service. In fact, at present there is no widely used REST service definition standard though in the past, developers have produced proprietary service definitions for REST. Rather, the culture of the REST technology largely relates to a trial-and-error approach to using a REST service. This trial-and-error approach involves the developer keying a uniform resource locator (URL) into the address field of a Web browser in order to examine the resulting document in the browser.
Based upon the examination of the returned results, the developer can determine the required code in the proper format utilizing proper semantics in order to utilize the REST service from the target application. In addition in order to “import” (use) the REST service within an application, the developer may be required to describe the REST service using a language required by the runtime environment of the application. For example the runtime environment supporting the target application may require that all REST services be described in accordance with a WSDL document.